This invention relates generally to reading information from magnetic media, specifically to detecting read errors and correcting for them when reading from magnetic tapes using the Group Code Recording (GCR) method.
One of the common data storage media used by computer systems is magnetic tapes. In commonly used recording formats magnetic tapes have several parallel data tracks running the length of the tape, and data is written serially along each track by altering the direction of magnetic flux on the tape. Two directions are employed, e.g., "left" and "right". A reversal of flux direction at a particular point on the tape indicates a "1" data bit, and a continuation of the same flux direction at that point indicates a data "0" bit. The read head is sensitive to flux reversals and converts them to a voltage signal which has peaks for each reversal. This signal has positive peaks for flux reversals of one type (such as changing from left to right) and negative peaks for flux reversals of opposite type (right to left). Because of this, an ideal voltage signal from the read head consists of alternating positive and negative peaks, indicating 1s, separated by stretches of zero voltage, indicating 0s. Peak detection circuitry analyzes the read voltage signal and produces corresponding digital data bits of 1s and 0s. For various reasons, however, the peak detection circuitry may not always properly detect a peak, resulting in reading incorrect digital data.
Generally, the peak detection circuitry is designed to look for peaks having a certain minimum amplitude and alternating in sign (e.g., positive/negative), because a proper signal is characterized by such alternating paeks, as described above. This means that if one peak is missed for some reason, the next peak will be missed as well, because it will have the opposite polarity expected by the peak detection circuitry. Thus, two extra 0s will be indicated where there should have been 1s. This characteristic can be taken advantage of, as noted below. Other errors include the missing of peaks during "dropout" periods of low peak amplitude, and the detection of peaks where they should not properly have been. This latter error is generally due to excessive noise. It is known in the prior art to reduce such erroneous peak detection due to noise by using amplitude qualification circuitry that requires a peak to have a minimum amplitude.
One common method for detecting when data read errors occur is to use Run Length Limited (RLL) encoding, which limits the minimum and maximum allowable number of 0s between 1s. RLL codes are specified by two numbers (m,n), where m specifies the minimum number of 0s between 1s, and where n specifies the maximum number of 0s between 1s. Group Code Recording (GCR) is a (0,2) RLL code. Under the GCR method, data to be written is grouped into four-bit nibbles which are then encoded into five-bit run length codes, shown in Table 1.
TABLE I ______________________________________ Group Code Recording Data Run-length Data Run-length Nibble Code Nibble Code ______________________________________ 0000 11001 1000 11010 0001 11011 1001 01001 0010 10010 1010 01010 0011 10011 1011 01011 0100 11101 1100 11110 0101 10101 1101 01101 0110 10110 1110 01110 0111 10111 1111 01111 ______________________________________
With GCR the encoded data has the property that a valid sequence of bits will not contain more than two contiguous 0s. A typical read error involves a missed peak and will substitute two 0s for two 1s, meaning that these errors will result in at least three contiguous 0s. This allows error detection circuitry coupled to the read head to search for three contiguous 0s and signal an error if such is found. Unfortunately, standard RLL encoding does not contain any provisions for error correction.